#ifndef __SCPI_CMD__
#define __SCPI_CMD__

#define UART_CMD_OUTPUT_LEN_MAX	(1024)
#define USER_CMD_COUNT_MAX		(15)
#define UART_CMD_ID_LEN_MAX		(32)
#define UART_CMD_INSTRUCT_LEN_MAX		(64)
#define USER_CMD_PARAM_STR_LEN_MAX (64)

#define USER_CMD_PARAM_COUNT_MAX	(6)


#define UART_CMD_STR_LEN_MAX	(UART_CMD_ID_LEN_MAX+USER_CMD_PARAM_COUNT_MAX*USER_CMD_PARAM_STR_LEN_MAX+10)

							
enum enBitWide
{
	BIT_8=0,
	BIT_16,
	BIT_32,
}BitWide;

typedef struct st_DbgCmd
{
	CHAR acCmdID[UART_CMD_ID_LEN_MAX+1];
	UINT32 uiCmdParamCnt;
	CHAR **argv;
	CHAR acCmdOutPut[UART_CMD_OUTPUT_LEN_MAX];
}stDbgCmd;


typedef struct st_DbgCmdNode
{
	CHAR acCmdID[UART_CMD_ID_LEN_MAX+1];
	CHAR acCmdInstuction[UART_CMD_INSTRUCT_LEN_MAX+1];
	UINT32 (*CmdHandle)(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
}stDbgCmdNode;



extern UINT32 StrCmdHelp(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdReadMem(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdWriteMem(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdReadReg(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdWriteReg(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdSetDbgPrint(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdGetTaskInfo(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdGetDumpMem(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
extern UINT32 StrCmdReleaseDumpMem(UINT32 *argc,CHAR **argv,CHAR *szOutPut);
#endif